import os
import re


def generate(self):
    """Generates a dictionary of all the known CRC formats from:
    http://reveng.sourceforge.net/crc-catalogue/all.htm

    See pwnlib/data/crcsum.txt for more information.
    """

    curdir, _ = os.path.split(__file__)
    path = os.path.join(curdir, '..', 'data', 'crcsums.txt')
    with open(path) as fd:
        data = fd.read()
    out = {}

    def fixup(s):
        if s == 'true':
            return True
        elif s == 'false':
            return False
        elif s.startswith('"'):
            assert re.match('"[^"]+"', s)
            return s[1:-1]
        elif s.startswith('0x'):
            assert re.match('0x[0-9a-fA-F]+', s)
            return int(s[2:], 16)
        else:
            assert re.match('[0-9]+', s)
            return int(s, 10)

    for l in data.strip().split('\n'):
        if not l or l[0] == '#':
            continue

        ref, l = l.split(' ', 1)

        cur = {}
        cur['link'] = 'http://reveng.sourceforge.net/crc-catalogue/all.htm#' + ref
        for key in ('width', 'poly', 'init',
                    'refin', 'refout',
                    'xorout', 'check', 'name'):
            cur[key] = fixup(re.findall(r'%s=(\S+)' % key, l)[0])

        cur['name'] = cur['name'].lower().replace('/', '_').replace('-', '_')
        assert cur['name'] not in out
        out[cur['name']] = cur

    return out


all_crcs = {
    'arc': {
        'check': 47933,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.16',
        'name': 'arc',
        'poly': 32773,
        'refin': True,
        'refout': True,
        'width': 16,
        'xorout': 0
    },
    'crc_10': {
        'check': 409,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.10',
        'name': 'crc_10',
        'poly': 563,
        'refin': False,
        'refout': False,
        'width': 10,
        'xorout': 0
    },
    'crc_10_cdma2000': {
        'check': 563,
        'init': 1023,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-10-cdma2000',
        'name': 'crc_10_cdma2000',
        'poly': 985,
        'refin': False,
        'refout': False,
        'width': 10,
        'xorout': 0
    },
    'crc_11': {
        'check': 1443,
        'init': 26,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.11',
        'name': 'crc_11',
        'poly': 901,
        'refin': False,
        'refout': False,
        'width': 11,
        'xorout': 0
    },
    'crc_12_3gpp': {
        'check': 3503,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.12',
        'name': 'crc_12_3gpp',
        'poly': 2063,
        'refin': False,
        'refout': True,
        'width': 12,
        'xorout': 0
    },
    'crc_12_cdma2000': {
        'check': 3405,
        'init': 4095,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-12-cdma2000',
        'name': 'crc_12_cdma2000',
        'poly': 3859,
        'refin': False,
        'refout': False,
        'width': 12,
        'xorout': 0
    },
    'crc_12_dect': {
        'check': 3931,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-12-dect',
        'name': 'crc_12_dect',
        'poly': 2063,
        'refin': False,
        'refout': False,
        'width': 12,
        'xorout': 0
    },
    'crc_13_bbc': {
        'check': 1274,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.13',
        'name': 'crc_13_bbc',
        'poly': 7413,
        'refin': False,
        'refout': False,
        'width': 13,
        'xorout': 0
    },
    'crc_14_darc': {
        'check': 2093,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.14',
        'name': 'crc_14_darc',
        'poly': 2053,
        'refin': True,
        'refout': True,
        'width': 14,
        'xorout': 0
    },
    'crc_15': {
        'check': 1438,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.15',
        'name': 'crc_15',
        'poly': 17817,
        'refin': False,
        'refout': False,
        'width': 15,
        'xorout': 0
    },
    'crc_15_mpt1327': {
        'check': 9574,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-15-mpt1327',
        'name': 'crc_15_mpt1327',
        'poly': 26645,
        'refin': False,
        'refout': False,
        'width': 15,
        'xorout': 1
    },
    'crc_16_aug_ccitt': {
        'check': 58828,
        'init': 7439,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-aug-ccitt',
        'name': 'crc_16_aug_ccitt',
        'poly': 4129,
        'refin': False,
        'refout': False,
        'width': 16,
        'xorout': 0
    },
    'crc_16_buypass': {
        'check': 65256,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-buypass',
        'name': 'crc_16_buypass',
        'poly': 32773,
        'refin': False,
        'refout': False,
        'width': 16,
        'xorout': 0
    },
    'crc_16_ccitt_false': {
        'check': 10673,
        'init': 65535,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-ccitt-false',
        'name': 'crc_16_ccitt_false',
        'poly': 4129,
        'refin': False,
        'refout': False,
        'width': 16,
        'xorout': 0
    },
    'crc_16_cdma2000': {
        'check': 19462,
        'init': 65535,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-cdma2000',
        'name': 'crc_16_cdma2000',
        'poly': 51303,
        'refin': False,
        'refout': False,
        'width': 16,
        'xorout': 0
    },
    'crc_16_dds_110': {
        'check': 40655,
        'init': 32781,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-dds-110',
        'name': 'crc_16_dds_110',
        'poly': 32773,
        'refin': False,
        'refout': False,
        'width': 16,
        'xorout': 0
    },
    'crc_16_dect_r': {
        'check': 126,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-dect-r',
        'name': 'crc_16_dect_r',
        'poly': 1417,
        'refin': False,
        'refout': False,
        'width': 16,
        'xorout': 1
    },
    'crc_16_dect_x': {
        'check': 127,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-dect-x',
        'name': 'crc_16_dect_x',
        'poly': 1417,
        'refin': False,
        'refout': False,
        'width': 16,
        'xorout': 0
    },
    'crc_16_dnp': {
        'check': 60034,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-dnp',
        'name': 'crc_16_dnp',
        'poly': 15717,
        'refin': True,
        'refout': True,
        'width': 16,
        'xorout': 65535
    },
    'crc_16_en_13757': {
        'check': 49847,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-en-13757',
        'name': 'crc_16_en_13757',
        'poly': 15717,
        'refin': False,
        'refout': False,
        'width': 16,
        'xorout': 65535
    },
    'crc_16_genibus': {
        'check': 54862,
        'init': 65535,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-genibus',
        'name': 'crc_16_genibus',
        'poly': 4129,
        'refin': False,
        'refout': False,
        'width': 16,
        'xorout': 65535
    },
    'crc_16_maxim': {
        'check': 17602,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-maxim',
        'name': 'crc_16_maxim',
        'poly': 32773,
        'refin': True,
        'refout': True,
        'width': 16,
        'xorout': 65535
    },
    'crc_16_mcrf4xx': {
        'check': 28561,
        'init': 65535,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-mcrf4xx',
        'name': 'crc_16_mcrf4xx',
        'poly': 4129,
        'refin': True,
        'refout': True,
        'width': 16,
        'xorout': 0
    },
    'crc_16_riello': {
        'check': 25552,
        'init': 45738,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-riello',
        'name': 'crc_16_riello',
        'poly': 4129,
        'refin': True,
        'refout': True,
        'width': 16,
        'xorout': 0
    },
    'crc_16_t10_dif': {
        'check': 53467,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-t10-dif',
        'name': 'crc_16_t10_dif',
        'poly': 35767,
        'refin': False,
        'refout': False,
        'width': 16,
        'xorout': 0
    },
    'crc_16_teledisk': {
        'check': 4019,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-teledisk',
        'name': 'crc_16_teledisk',
        'poly': 41111,
        'refin': False,
        'refout': False,
        'width': 16,
        'xorout': 0
    },
    'crc_16_tms37157': {
        'check': 9905,
        'init': 35308,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-tms37157',
        'name': 'crc_16_tms37157',
        'poly': 4129,
        'refin': True,
        'refout': True,
        'width': 16,
        'xorout': 0
    },
    'crc_16_usb': {
        'check': 46280,
        'init': 65535,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-16-usb',
        'name': 'crc_16_usb',
        'poly': 32773,
        'refin': True,
        'refout': True,
        'width': 16,
        'xorout': 65535
    },
    'crc_24': {
        'check': 2215682,
        'init': 11994318,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.24',
        'name': 'crc_24',
        'poly': 8801531,
        'refin': False,
        'refout': False,
        'width': 24,
        'xorout': 0
    },
    'crc_24_flexray_a': {
        'check': 7961021,
        'init': 16702650,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-24-flexray-a',
        'name': 'crc_24_flexray_a',
        'poly': 6122955,
        'refin': False,
        'refout': False,
        'width': 24,
        'xorout': 0
    },
    'crc_24_flexray_b': {
        'check': 2040760,
        'init': 11259375,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-24-flexray-b',
        'name': 'crc_24_flexray_b',
        'poly': 6122955,
        'refin': False,
        'refout': False,
        'width': 24,
        'xorout': 0
    },
    'crc_31_philips': {
        'check': 216654956,
        'init': 2147483647,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.31',
        'name': 'crc_31_philips',
        'poly': 79764919,
        'refin': False,
        'refout': False,
        'width': 31,
        'xorout': 2147483647
    },
    'crc_32': {
        'check': 3421780262,
        'init': 4294967295,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.32',
        'name': 'crc_32',
        'poly': 79764919,
        'refin': True,
        'refout': True,
        'width': 32,
        'xorout': 4294967295
    },
    'crc_32_bzip2': {
        'check': 4236843288,
        'init': 4294967295,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-32-bzip2',
        'name': 'crc_32_bzip2',
        'poly': 79764919,
        'refin': False,
        'refout': False,
        'width': 32,
        'xorout': 4294967295
    },
    'crc_32_mpeg_2': {
        'check': 58124007,
        'init': 4294967295,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-32-mpeg-2',
        'name': 'crc_32_mpeg_2',
        'poly': 79764919,
        'refin': False,
        'refout': False,
        'width': 32,
        'xorout': 0
    },
    'crc_32_posix': {
        'check': 1985902208,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-32-posix',
        'name': 'crc_32_posix',
        'poly': 79764919,
        'refin': False,
        'refout': False,
        'width': 32,
        'xorout': 4294967295
    },
    'crc_32c': {
        'check': 3808858755,
        'init': 4294967295,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-32c',
        'name': 'crc_32c',
        'poly': 517762881,
        'refin': True,
        'refout': True,
        'width': 32,
        'xorout': 4294967295
    },
    'crc_32d': {
        'check': 2268157302,
        'init': 4294967295,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-32d',
        'name': 'crc_32d',
        'poly': 2821953579,
        'refin': True,
        'refout': True,
        'width': 32,
        'xorout': 4294967295
    },
    'crc_32q': {
        'check': 806403967,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-32q',
        'name': 'crc_32q',
        'poly': 2168537515,
        'refin': False,
        'refout': False,
        'width': 32,
        'xorout': 0
    },
    'crc_3_rohc': {
        'check': 6,
        'init': 7,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.3',
        'name': 'crc_3_rohc',
        'poly': 3,
        'refin': True,
        'refout': True,
        'width': 3,
        'xorout': 0
    },
    'crc_40_gsm': {
        'check': 910907393606,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.40',
        'name': 'crc_40_gsm',
        'poly': 75628553,
        'refin': False,
        'refout': False,
        'width': 40,
        'xorout': 1099511627775
    },
    'crc_4_itu': {
        'check': 7,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.4',
        'name': 'crc_4_itu',
        'poly': 3,
        'refin': True,
        'refout': True,
        'width': 4,
        'xorout': 0
    },
    'crc_5_epc': {
        'check': 0,
        'init': 9,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.5',
        'name': 'crc_5_epc',
        'poly': 9,
        'refin': False,
        'refout': False,
        'width': 5,
        'xorout': 0
    },
    'crc_5_itu': {
        'check': 7,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-5-itu',
        'name': 'crc_5_itu',
        'poly': 21,
        'refin': True,
        'refout': True,
        'width': 5,
        'xorout': 0
    },
    'crc_5_usb': {
        'check': 25,
        'init': 31,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-5-usb',
        'name': 'crc_5_usb',
        'poly': 5,
        'refin': True,
        'refout': True,
        'width': 5,
        'xorout': 31
    },
    'crc_64': {
        'check': 7800480153909949255,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.64',
        'name': 'crc_64',
        'poly': 4823603603198064275,
        'refin': False,
        'refout': False,
        'width': 64,
        'xorout': 0
    },
    'crc_64_we': {
        'check': 7128171145767219210,
        'init': 18446744073709551615,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-64-we',
        'name': 'crc_64_we',
        'poly': 4823603603198064275,
        'refin': False,
        'refout': False,
        'width': 64,
        'xorout': 18446744073709551615
    },
    'crc_64_xz': {
        'check': 11051210869376104954,
        'init': 18446744073709551615,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-64-xz',
        'name': 'crc_64_xz',
        'poly': 4823603603198064275,
        'refin': True,
        'refout': True,
        'width': 64,
        'xorout': 18446744073709551615
    },
    'crc_6_cdma2000_a': {
        'check': 13,
        'init': 63,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.6',
        'name': 'crc_6_cdma2000_a',
        'poly': 39,
        'refin': False,
        'refout': False,
        'width': 6,
        'xorout': 0
    },
    'crc_6_cdma2000_b': {
        'check': 59,
        'init': 63,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-6-cdma2000-b',
        'name': 'crc_6_cdma2000_b',
        'poly': 7,
        'refin': False,
        'refout': False,
        'width': 6,
        'xorout': 0
    },
    'crc_6_darc': {
        'check': 38,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-6-darc',
        'name': 'crc_6_darc',
        'poly': 25,
        'refin': True,
        'refout': True,
        'width': 6,
        'xorout': 0
    },
    'crc_6_itu': {
        'check': 6,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-6-itu',
        'name': 'crc_6_itu',
        'poly': 3,
        'refin': True,
        'refout': True,
        'width': 6,
        'xorout': 0
    },
    'crc_7': {
        'check': 117,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.7',
        'name': 'crc_7',
        'poly': 9,
        'refin': False,
        'refout': False,
        'width': 7,
        'xorout': 0
    },
    'crc_7_rohc': {
        'check': 83,
        'init': 127,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-7-rohc',
        'name': 'crc_7_rohc',
        'poly': 79,
        'refin': True,
        'refout': True,
        'width': 7,
        'xorout': 0
    },
    'crc_8': {
        'check': 244,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.8',
        'name': 'crc_8',
        'poly': 7,
        'refin': False,
        'refout': False,
        'width': 8,
        'xorout': 0
    },
    'crc_82_darc': {
        'check': 749237524598872659187218,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat-bits.82',
        'name': 'crc_82_darc',
        'poly': 229256212191916381701137,
        'refin': True,
        'refout': True,
        'width': 82,
        'xorout': 0
    },
    'crc_8_cdma2000': {
        'check': 218,
        'init': 255,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-8-cdma2000',
        'name': 'crc_8_cdma2000',
        'poly': 155,
        'refin': False,
        'refout': False,
        'width': 8,
        'xorout': 0
    },
    'crc_8_darc': {
        'check': 21,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-8-darc',
        'name': 'crc_8_darc',
        'poly': 57,
        'refin': True,
        'refout': True,
        'width': 8,
        'xorout': 0
    },
    'crc_8_dvb_s2': {
        'check': 188,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-8-dvb-s2',
        'name': 'crc_8_dvb_s2',
        'poly': 213,
        'refin': False,
        'refout': False,
        'width': 8,
        'xorout': 0
    },
    'crc_8_ebu': {
        'check': 151,
        'init': 255,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-8-ebu',
        'name': 'crc_8_ebu',
        'poly': 29,
        'refin': True,
        'refout': True,
        'width': 8,
        'xorout': 0
    },
    'crc_8_i_code': {
        'check': 126,
        'init': 253,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-8-i-code',
        'name': 'crc_8_i_code',
        'poly': 29,
        'refin': False,
        'refout': False,
        'width': 8,
        'xorout': 0
    },
    'crc_8_itu': {
        'check': 161,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-8-itu',
        'name': 'crc_8_itu',
        'poly': 7,
        'refin': False,
        'refout': False,
        'width': 8,
        'xorout': 85
    },
    'crc_8_maxim': {
        'check': 161,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-8-maxim',
        'name': 'crc_8_maxim',
        'poly': 49,
        'refin': True,
        'refout': True,
        'width': 8,
        'xorout': 0
    },
    'crc_8_rohc': {
        'check': 208,
        'init': 255,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-8-rohc',
        'name': 'crc_8_rohc',
        'poly': 7,
        'refin': True,
        'refout': True,
        'width': 8,
        'xorout': 0
    },
    'crc_8_wcdma': {
        'check': 37,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-8-wdcma',
        'name': 'crc_8_wcdma',
        'poly': 155,
        'refin': True,
        'refout': True,
        'width': 8,
        'xorout': 0
    },
    'crc_a': {
        'check': 48901,
        'init': 50886,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.crc-a',
        'name': 'crc_a',
        'poly': 4129,
        'refin': True,
        'refout': True,
        'width': 16,
        'xorout': 0
    },
    'jamcrc': {
        'check': 873187033,
        'init': 4294967295,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.jamcrc',
        'name': 'jamcrc',
        'poly': 79764919,
        'refin': True,
        'refout': True,
        'width': 32,
        'xorout': 0
    },
    'kermit': {
        'check': 8585,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.kermit',
        'name': 'kermit',
        'poly': 4129,
        'refin': True,
        'refout': True,
        'width': 16,
        'xorout': 0
    },
    'modbus': {
        'check': 19255,
        'init': 65535,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.modbus',
        'name': 'modbus',
        'poly': 32773,
        'refin': True,
        'refout': True,
        'width': 16,
        'xorout': 0
    },
    'x_25': {
        'check': 36974,
        'init': 65535,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.x-25',
        'name': 'x_25',
        'poly': 4129,
        'refin': True,
        'refout': True,
        'width': 16,
        'xorout': 65535
    },
    'xfer': {
        'check': 3171672888,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.xfer',
        'name': 'xfer',
        'poly': 175,
        'refin': False,
        'refout': False,
        'width': 32,
        'xorout': 0
    },
    'xmodem': {
        'check': 12739,
        'init': 0,
        'link': 'http://reveng.sourceforge.net/crc-catalogue/all.htm#crc.cat.xmodem',
        'name': 'xmodem',
        'poly': 4129,
        'refin': False,
        'refout': False,
        'width': 16,
        'xorout': 0
    }
}
